package generics;
/*
泛型:在编译阶段约束操作数据类型的安全检测机制
    好处:约束数据,在把运行阶段出现的错误在编译阶段报出
    注:泛型只能编写引用数据
泛型类:class student<E>{},在创建对象时传入数据类型
泛型方法{1.非静态方法:根据泛型类匹配,随着对象创建,匹配类型:public int set(E e){}
        2.静态方法:优先对象的创建,需要声明处独立的泛型,方法被调用时,匹配类型,:public static<T> int set(T t){}
}
泛型接口{1.实现接口时,知道具体类型,指定类型
       2.实现接口时,不知道具体类型,继续声明泛型,在创建对象时,匹配类型
}
泛型通配符:{1.<?>,任意类型
          2.<? extends E>,类型为E,或E的子类
          3.<? super E>,E或E的父类
}
 */
public class GenericsDemo<E> {
    public static void main(String[] args) {

    }
    public int get(E e){
        return 0;
    }
    public static<T> int set(T t){
        return 1;
    }
}
interface A<E>{
    public void show(E e);
}
class ImplentsA implements A<String>{
    @Override
    public void show(String s){

    }

}
    class ImplentsB <E>implements A<E>{

    @Override
    public void show(E e) {

    }
}